package com.admin.system.service.mapstruct;

import com.admin.model.base.BaseMapper;
import com.admin.model.pojo.Menu;
import com.admin.model.dto.MenuDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * (User)表服务接口
 *
 * @author makejava
 * @since 2021-01-31 19:19:30
 */
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MenuMapper extends BaseMapper<MenuDto, Menu> {

    default MenuDto toDto(Menu entity) {
        if (entity == null) {
            return null;
        } else {
            MenuDto menuDto = new MenuDto();
            menuDto.setCreatedBy(entity.getCreatedBy());
            menuDto.setCreatedUser(entity.getCreatedUser());
            menuDto.setUpdatedBy(entity.getUpdatedBy());
            menuDto.setUpdatedUser(entity.getUpdatedUser());
            menuDto.setCreateTime(entity.getCreateTime());
            menuDto.setUpdateTime(entity.getUpdateTime());
            menuDto.setId(entity.getId());
            menuDto.setPid(entity.getPid());
            menuDto.setType(entity.getType());
            menuDto.setTitle(entity.getTitle());
            menuDto.setName(entity.getName());
            menuDto.setComponent(entity.getComponent());
            menuDto.setSort(entity.getSort());
            menuDto.setIcon(entity.getIcon());
            menuDto.setPath(entity.getPath());
            menuDto.setFrame(entity.getFrame());
            menuDto.setCache(entity.getCache());
            menuDto.setHidden(entity.getHidden());
            menuDto.setPermission(entity.getPermission());
            List<MenuDto> menuDtoList = this.toDto(entity.getChildren());
            if(!CollectionUtils.isEmpty(menuDtoList)){
                menuDto.setChildren(menuDtoList);
            }else{
                menuDto.setChildren(null);
            }
            return menuDto;
        }
    }
}